package br.cnpq.webflowah.beans;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

public class ServicoSemantico implements Serializable {

	private static final long serialVersionUID = 1L;

	private String nome = null;

	private String uri = null;

	private String categoria = null;

	private String ontologia = null;

	private List<Conceito> objetos = new ArrayList<Conceito>();

	private List<Conceito> tarefas = new ArrayList<Conceito>();

	private Metadata metadata = null;

	private boolean isRollbackable = false;

	private boolean isCondAction = false;

	private boolean isDependent = false;

	private List<String> dependencies = null;

	public void addObjeto(Object objeto) {
		objetos.add((Conceito) objeto);
	}

	public Object getObjeto(String uri) {
		for (int i=0; i < objetos.size(); i++) {
			Conceito conceito = (Conceito) objetos.get(i);
			if (uri.equals(conceito.getURI())) return conceito;
		}

		return null;
	}

	public List getObjetos() {
		return this.objetos;
	}

	public void addTarefa(Object tarefa) {
		tarefas.add((Conceito) tarefa);
	}

	public Object getTarefa(String uri) {
		for (int i=0; i < tarefas.size(); i++) {
			Conceito conceito = (Conceito) tarefas.get(i);
			if (uri.equals(conceito.getURI())) return conceito;
		}

		return null;
	}

	public List getTarefas() {
		return this.tarefas;
	}

	public String getNome() {
		return this.nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public String getCategoria() {
		return this.categoria;
	}

	public void setCategoria(String categoria) {
		this.categoria = categoria;
	}

	public String getOntologia() {
		return this.ontologia;
	}

	public void setOntologia(String ontologia) {
		this.ontologia = ontologia;
	}

	public String getURI() {
		return this.uri;
	}

	public void setURI(String uri) {
		this.uri = uri;
	}

	public String toString() {
		return this.getURI();
	}

	public Object[] toArray() {
		return new Object[] {this.getNome(), this.getCategoria(), this.getOntologia()};
	}

	public Metadata getMetadata() {
		return metadata;
	}

	public void setMetadata(Metadata metadata) {
		this.metadata = metadata;
	}

	public boolean isCondAction() {
		return isCondAction;
	}

	public void setCondAction(boolean isCondActiob) {
		this.isCondAction = isCondActiob;
	}

	public boolean isDependent() {
		return isDependent;
	}

	public void setDependent(boolean isDependent) {
		this.isDependent = isDependent;
	}

	public boolean isRollbackable() {
		return isRollbackable;
	}

	public void setRollbackable(boolean isRollbackable) {
		this.isRollbackable = isRollbackable;
	}

	public List<String> getDependencies() {
		return dependencies;
	}

	public void setDependencies(List<String> dependencies) {
		this.dependencies = dependencies;
	}

}
